<template>
	<view class="page">
		<view class="top">
			<view class="header-photo">
				<avatar :userName="userInfo.real_name" size="90"></avatar>
			</view>
			<view class="user-name">
				{{userInfo.real_name}}
			</view>
		</view>
		<view class="middle">
			<view class="cu-item content">
				<textarea v-model="userInfo.signature"
							auto-height="true"
							maxlength=2000
							disabled="false"
				></textarea>
			</view>
			<view class="other-info">
				<view class="score" @tap="goPage('followList')">
					关注：{{userOtherInfo.followNumber}}
				</view>
				<view class="score" @tap="goPage('fansList')">
					粉丝：{{userOtherInfo.fansNumber}}
				</view>
				<view class="score">
					积分：{{userInfo.integral}}
				</view>
			</view>
		</view>
		<view class="bottom">
			<view class="cu-list grid" :class="['col-' + gridCol,gridBorder?'':'no-border']">
				<view class="cu-item" 
						v-for="(item,index) in cuIconList" 
						:key="index" 
						v-if="item.admin === 0"
						@tap="goToPage(item)">
					<view :class="['cuIcon-' + item.cuIcon,'text-' + item.color]">
						<view class="cu-tag badge" v-if="item.badge > 0">
							<block v-if="item.badge > 0">{{item.badge>99?'99+':item.badge}}</block>
						</view>
					</view>
					<text>{{item.name}}</text>
				</view>
			</view>
		</view>
	</view>
</template>

<script>
	import request from '@/util/request.js';
	import { updateUserInfo } from "@/static/js/public.js";
	import avatar from "@/pages/components/avatar/avatar.vue";
	export default {
		components: {
			avatar
		},
		data() {
			return {
				gridCol: 3,
				gridBorder: false,
				cuIconList: [
					{
						cuIcon: 'favor',
						color: 'orange',
						name: '收藏',
						admin: 0,
						badge: 0,
						code: 'collection'
					}, 
					{
						cuIcon: 'list',
						color: 'yellow',
						name: '我的文章',
						admin: 0,
						badge: 0,
						code: 'myArticle'
					}, 
					{
						cuIcon: 'notice',
						color: 'green',
						name: '通知',
						admin: 0,
						badge: 0,
						code: 'notice'
					}, 
					{
						cuIcon: 'edit',
						color: 'red',
						name: '编辑信息',
						admin: 0,
						badge: 0,
						code: 'personInfo'
					}, 
					{
						cuIcon: 'newshot',
						color: 'olive',
						name: '文章管理',
						admin: uni.getStorageSync("userInfo").user_type === "管理员" ? 0 : 1,
						badge: 0,
						code: 'articleManagement'
					},
					{
						cuIcon: 'peoplelist',
						color: 'cyan',
						name: '人员管理',
						admin: uni.getStorageSync("userInfo").user_type === "管理员" ? 0 : 1,
						badge: 0,
						code: 'peopleManagement'
					},
					{
						cuIcon: 'friendadd',
						color: 'mauve',
						name: '注册管理',
						admin: uni.getStorageSync("userInfo").user_type === "管理员" ? 0 : 1,
						badge: 0,
						code: 'registerManagement'
					},
					{
						cuIcon: 'comment',
						color: 'brown',
						name: '帮助答复',
						admin: uni.getStorageSync("userInfo").user_type === "管理员" ? 0 : 1,
						badge: 0,
						code: 'helpAnswer'
					},
					{
						cuIcon: 'subscription',
						color: 'black',
						name: '群发消息',
						admin: uni.getStorageSync("userInfo").user_type === "管理员" ? 0 : 1,
						badge: 0,
						code: 'massHair'
					},
					{
						cuIcon: 'settings',
						color: 'purple',
						name: '设置',
						admin: 0,
						badge: 0,
						code: 'settings'
					}, 
					{
						cuIcon: 'questionfill',
						color: 'pink',
						name: '帮助',
						admin: uni.getStorageSync("userInfo").user_type === "管理员" ? 1 : 0,
						badge: 0,
						code: 'help'
					},
					
				],
				userInfo: {},
				userOtherInfo: {},
				//通知数量
				noticeNumber: 0
			}
		},
		/**
		 * 跳转通知页面
		 * @param {Object} e
		 */
		onNavigationBarButtonTap(e) {
			uni.navigateTo({
				url: '/pages/tabbar/my/notice/notice'
			})
		},
		onShow() {
			this.getUserInfo();
			this.getMyPageNumber();
			this.getNoticeData();
			this.userInfo = uni.getStorageSync("userInfo");
			let timesRun = 0;
			let interval = setInterval(() => {
				updateUserInfo();
			timesRun += 1;
			if(timesRun === 5){
			clearInterval(interval);
			}
			}, 10000);
		},
		onLoad() {
			
		},
		onPullDownRefresh () {
			this.getMyPageNumber();
			this.getNoticeData();
			this.getUserInfo();
		},
		mounted() {
		},
		methods: {
			/**
			 * 获取通知
			 */
			getNoticeData() {
				let _this = this;
				request.post('/hs/getNoticeData',{
					authorId: uni.getStorageSync("userInfo").user_id
				}).then(res => {
					this.noticeNumber = res.data.messageNoticeList.length + res.data.verifyNoticeList.length;
					_this.cuIconList[2].badge = this.noticeNumber;
					if(this.noticeNumber == 0) {
						//隐藏
						// #ifdef APP-PLUS
						const pages = getCurrentPages();
						const page = pages[pages.length - 1];
						const currentWebview = page.$getAppWebview();
						currentWebview.hideTitleNViewButtonRedDot({
							index:0
						});
						// #endif
					}else{
						//显示
						// #ifdef APP-PLUS
						const pages = getCurrentPages();
						const page = pages[pages.length - 1];
						const currentWebview = page.$getAppWebview();
						currentWebview.showTitleNViewButtonRedDot({
							index:0
						});
						// #endif
					}
					console.log("通知",res);
				},err => {
					console.log("err",err);
				})
			},
			/**
			 * 获取文章管理/帮助答复的未操作数字
			 */
			getMyPageNumber() {
				let _this = this;
				request.post("/admin/getMyPageNumber",{
				}).then(res => {
					console.log("获取文章管理/帮助答复的未操作数字",res);
					_this.cuIconList[4].badge = res.data.articleManagementNumber;
					_this.cuIconList[6].badge = res.data.registerManagementNumner;
					_this.cuIconList[7].badge = res.data.helpAnswerNumber;
				},err => {
					console.log("err",err)
				})
			},
			/**
			 * 跳转页面
			 * @param {Object} pageName 页面名称
			 */
			goPage(pageName) {
				const FUNCTION_CODE = {
					'followList': '/pages/tabbar/follow/follow-list',
					'fansList': '/pages/tabbar/follow/fans-list',
				}
				uni.navigateTo({
					url: `${FUNCTION_CODE[pageName]}`
				})
			},
			/**
			 * 获取个人信息
			 */
			getUserInfo() {
				request.post("/hs/getPersonalInfo",{
					userId: uni.getStorageSync("userInfo").user_id,
					releaseId: uni.getStorageSync("userInfo").user_id
				}).then(res => {
					uni.startPullDownRefresh();
					console.log("个人信息",res);
					this.userOtherInfo = res.data.personalInfo;
				},err => {
					console.log("err",err);
				}) 
			},
			/**
			 * 跳转页面
			 * @param {Object} item
			 */
			goToPage(item) {
				const FUNCTION_CODE = {
					"collection": "/pages/tabbar/my/collection/collection",
					"myArticle": "/pages/tabbar/my/my-article/my-article",
					"personInfo": "/pages/tabbar/my/edit-info/edit-info",
					"settings": "/pages/tabbar/my/settings/settings",
					"help": "/pages/tabbar/my/help/help",
					"articleManagement": "/pages/tabbar/my/article-management/article-management",
					"peopleManagement": "/pages/tabbar/my/people-management/people-management",
					"helpAnswer": "/pages/tabbar/my/help-answer/help-answer",
					"registerManagement": "/pages/tabbar/my/register-management/register-management",
					"notice": "/pages/tabbar/my/notice/notice",
					"massHair": "/pages/tabbar/my/mass-hair/mass-hair"
				};
				uni.navigateTo({
					url: `${FUNCTION_CODE[item.code]}`
				})
			}
		}
	}
</script>

<style scoped>
	.max{
		width: 180rpx;
		height: 180rpx;
	}
	.signature{
		font-size: 30rpx;
		font-weight: bold;
		padding-bottom: 10rpx;
	}
	.content {
		background-color: #F1F1F1;
		width: 100%;
		padding: 20rpx;
		border-radius: 10rpx;
	}
	textarea{
		line-height: 1.5;
		width: 100%;
		height: 100%;
	}
	.bottom{
		display: flex;
		flex-flow: column;
	}
	.grade .r, .grade .l{
		font-size: 14rpx;
		padding: 5rpx;
		border-radius: 5rpx;
	}
	.grade .l{
		background-color: #9DC75F;
	}
	.grade .r{
		background-color: #2D5315;
	}
	.user-info view{
		padding: 10rpx 10rpx;
	}
	.user-info{
		color: #FFFFFF;
		display: flex;
		flex-flow: nowrap;
		justify-content: center;
		border: 1rpx solid #b0b0b0;
		border-radius: 10rpx;
		width: 70%;
		font-size: 32rpx;
		background-color: #ced8d8;
	}
	.header-photo{
		display: flex;
		justify-content: center;
		align-items: center;
	}
	.other-info{
		display: flex;
		justify-content: space-between;
		padding: 20rpx 40rpx;
		color: #9a9a9a;
		font-size: 30rpx;
	}
	.middle{
		padding: 40rpx 20rpx 0;
	}
	.user-name{
		padding-top: 20rpx;
		text-align: center;
	}
	.top{
		display: flex;
		flex-flow: column;
		justify-content: center;
	}
	.page{
		padding: 20rpx;
		display: flex;
		flex-flow: column;
		background-color: #FFFFFF;
	}
</style>
